//==== opciones de cabecera ==================================================
header {
  package pl.p03;
}// header
//=== opciones generales a todo el fichero ====================================
options {
}// options
//=============================================================================
//////////////////////////////
///// Analizador léxico  /////
//////////////////////////////
class LexAnalyzer extends Lexer;

  //_____ Zona de opciones del analizador _____________________________________
  options {
    //testLiterals=false;    // Comprobar literales cuando se diga explícitamente
    k=2; // Resolver ambigüedad entre FOR y FALSE al empezar con 'F'
  }// options */

  //_____ Zona de definición de tokens ________________________________________
  /* tokens {
  	
  }// tokens */

  //_____ Zona de código nativo _______________________________________________
  /* {  
  }// código nativo */

  //_____ Zona de reglas ______________________________________________________
    // Nueva línea
    protected NL : ('\n') { newline(); } ; // Acción: aumentar el contador de línea
    // Ignorar los blancos
    BLANCO : (' '|'\t'|'\r'|NL) { $setType(Token.SKIP); }; // Acción: ignorar
    // Letras
    protected LETRA : ('a'..'z')|'_';
    // Dígitos
    protected DIGITO : '0'..'9';
    // Identificadores
    ID : LETRA(LETRA|DIGITO)*;
    // Números
    NUMERO : (DIGITO)+ ;
    // Booleanos
    BOOLEAN : ( "TRUE" | "FALSE" ) ;
    // Rutas
    DIR : ('/' ID )+ ;
    // Cadena de caracteres
    STRING : '\"' ( LETRA | DIGITO | BLANCO )* '\"' ;
    // Variables de usuario
    SET : "SET" ;
    USERVAR : '$' ID ;
    // Flujo condicional: IF
    IF : "IF" ;
    // Bucle
    FOR : "FOR" ;
    TO : "TO" ;
    WHILE : "WHILE" ;
    // Separadores
    PUNTO_COMA 	: ';' ;
    LLAVE_A 	: '{' ; LLAVE_C 	: '}' ;
    PARENT_A 	: '(' ; PARENT_C 	: ')' ;
    // Operadores
    OP_ASIG		: '=' ;
  //___________________________________________________________________________
